package it.azienda.moretti.controllo;

import it.azienda.moretti.utilita.CalcolaCodiceFiscale;
import java.text.ParseException;
import javax.faces.application.FacesMessage;
import javax.faces.context.FacesContext;
import javax.faces.event.ActionEvent;
import org.apache.myfaces.component.html.ext.HtmlInputHidden;
import org.apache.myfaces.component.html.ext.HtmlInputText;
import org.apache.myfaces.component.html.ext.HtmlSelectOneRadio;
import javax.faces.component.html.HtmlForm;

public class AzioneCalcolaCodiceFiscale {
    
    public void calcola(ActionEvent ae) throws ParseException{
        //Cognome
        HtmlInputText inputTextCognome= (HtmlInputText) ae.getComponent().findComponent("cognome");
        String cognome=(String) inputTextCognome.getSubmittedValue();
        //Nome
        HtmlInputText inputTextNome= (HtmlInputText) ae.getComponent().findComponent("nome");
        String nome=(String) inputTextNome.getSubmittedValue();
        //Sesso
        HtmlSelectOneRadio htmlSelectOneRadioSesso= (HtmlSelectOneRadio) ae.getComponent().findComponent("sesso");
        String sesso=(String) htmlSelectOneRadioSesso.getSubmittedValue();
        //DataNascita
        HtmlInputText inputTextDataNascita= (HtmlInputText) ae.getComponent().findComponent("dataNascita");
        String dataNascita=(String) inputTextDataNascita.getSubmittedValue();
        //CodBelfiore
        HtmlInputHidden inputHiddenCodBelfiore= (HtmlInputHidden) ae.getComponent().findComponent("codBelfiore");
        String codBelfiore=(String) inputHiddenCodBelfiore.getSubmittedValue();
        
        FacesContext ctx = FacesContext.getCurrentInstance();
        HtmlForm form = (HtmlForm)ctx.getViewRoot().findComponent("erroriDataBase");
        
        boolean errori=false;
        if(cognome.equals("")){
            form.setRendered(true);
            ctx.addMessage("erroriDataBase", new FacesMessage("Cognome Obbligatorio!"));
            errori=true;
        }if(nome.equals("")){
            form.setRendered(true);
            ctx.addMessage("erroriDataBase", new FacesMessage("Nome Obbligatorio!"));
            errori=true;
        }if(sesso.equals("")){
            form.setRendered(true);
            ctx.addMessage("erroriDataBase", new FacesMessage("Sesso Obbligatorio!"));
            errori=true;
        }if(dataNascita.equals("")){
            form.setRendered(true);
            ctx.addMessage("erroriDataBase", new FacesMessage("Data Nascita Obbligatoria!"));
            errori=true;
        }if(codBelfiore.equals("")){
            form.setRendered(true);
            ctx.addMessage("erroriDataBase", new FacesMessage("Comune Nascita Obbligatorio!"));
            errori=true;
        }
        
        if(errori){ return;}
        
        //metodo di calcolo
        CalcolaCodiceFiscale calcolaCodice=new CalcolaCodiceFiscale(nome,cognome,sesso,dataNascita,codBelfiore);
        String codiceFiscale="";
        try{
            codiceFiscale=calcolaCodice.calcolaCodiceFiscale();
        }catch(Exception ex){
            form.setRendered(true);
            ctx.addMessage("erroriDataBase", new FacesMessage("Errore nel calcolo del Codice Fiscale"));
            return;
        }
        //Settare
        HtmlInputText padre= (HtmlInputText) ae.getComponent().findComponent("codiceFiscale");
        padre.setSubmittedValue(codiceFiscale.toUpperCase());
    }
}